package design_pattern.prototype;

import java.io.IOException;
import java.io.OptionalDataException;

public interface Prototype extends Cloneable {

  /**
   * 浅复制
   * 
   * @return
   */
  public Object clone();

  /**
   * 深复制。
   * 
   * 在Java语言里深复制一个对象，常常可以先使对象实现Serializable接口， 然后把对象（实际上只是对象的一个拷贝）写到一个内存数组流里（腌成咸菜），
   * 再从流里读回来（把咸菜回鲜），便可以重建对象。
   * 
   * @return
   * @throws IOException
   * @throws OptionalDataException
   * @throws ClassNotFoundException
   */
  public Object deepClone() throws IOException, OptionalDataException, ClassNotFoundException;
}
